9aa80b9a5d7949f147543e0b86a57f55c654dc4c,platform/core-impl/src/com/intellij/psi/impl/source/tree/AstBufferUtil.java,AstBufferUtil,toBuffer,#ASTNode#char[]#number#boolean#,36
Before Change
public static int toBuffer(@NotNull final ASTNode element, @Nullable final char[] buffer, int offset, final boolean skipWhitespaceAndComments) {
final int[] result = {offset};
((TreeElement)element).acceptTree(new RecursiveTreeElementWalkingVisitor(false) {
@Override
public void visitLeaf(LeafElement element) {
ProgressIndicatorProvider.checkCanceled();
if (element instanceof ForeignLeafPsiElement ||
(skipWhitespaceAndComments && (element instanceof PsiWhiteSpace || element instanceof PsiComment))) {
return;
}
result[0] = element.copyTo(buffer, result[0]);
}
@Override
public void visitComposite(CompositeElement composite) {
if (composite instanceof LazyParseableElement) {
LazyParseableElement lpe = (LazyParseableElement)composite;
int lpeResult = lpe.copyTo(buffer, result[0]);
if (lpeResult >= 0) {
result[0] = lpeResult;
return;
}
assert lpe.isParsed();
}
super.visitComposite(composite);
}
});
return result[0];
}
After Change
public static int toBuffer(@NotNull final ASTNode element, @Nullable final char[] buffer, int offset, final boolean skipWhitespaceAndComments) {
BufferVisitor visitor = new BufferVisitor(skipWhitespaceAndComments, skipWhitespaceAndComments, offset, buffer);
((TreeElement)element).acceptTree(visitor);
return visitor.end;
}